home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / python / pythnnws.8 < prev    next >
Text File  |  1993-07-22  |  20KB  |  586 lines

  1. ==============================
  2. ==> NEWS FOR RELEASE 0.9.8 <==
  3. ==============================
  4.  
  5. I claim no completeness here, but I've tried my best to scan the log
  6. files throughout my source tree for interesting bits of news.  A more
  7. complete account of the changes is to be found in the various
  8. ChangeLog files. See also "News for release 0.9.7beta" below if you're
  9. still using release 0.9.6, and the file HISTORY if you have an even
  10. older release.
  11.  
  12.     --Guido
  13.  
  14.  
  15. Changes to the language proper
  16. ------------------------------
  17.  
  18. There's only one big change: the conformance checking for function
  19. argument lists (of user-defined functions only) is stricter.  Earlier,
  20. you could get away with the following:
  21.  
  22.     (a) define a function of one argument and call it with any
  23.         number of arguments; if the actual argument count wasn't
  24.         one, the function would receive a tuple containing the
  25.         arguments arguments (an empty tuple if there were none).
  26.  
  27.     (b) define a function of two arguments, and call it with more
  28.         than two arguments; if there were more than two arguments,
  29.         the second argument would be passed as a tuple containing
  30.         the second and further actual arguments.
  31.  
  32. (Note that an argument (formal or actual) that is a tuple is counted as
  33. one; these rules don't apply inside such tuples, only at the top level
  34. of the argument list.)
  35.  
  36. Case (a) was needed to accommodate variable-length argument lists;
  37. there is now an explicit "varargs" feature (precede the last argument
  38. with a '*').  Case (b) was needed for compatibility with old class
  39. definitions: up to release 0.9.4 a method with more than one argument
  40. had to be declared as "def meth(self, (arg1, arg2, ...)): ...".
  41. Version 0.9.6 provide better ways to handle both casees, bot provided
  42. backward compatibility; version 0.9.8 retracts the compatibility hacks
  43. since they also cause confusing behavior if a function is called with
  44. the wrong number of arguments.
  45.  
  46. There's a script that helps converting classes that still rely on (b),
  47. provided their methods' first argument is called "self":
  48. demo/scripts/methfix.py.
  49.  
  50. If this change breaks lots of code you have developed locally, try
  51. #defining COMPAT_HACKS in ceval.c.
  52.  
  53. (There's a third compatibility hack, which is the reverse of (a): if a
  54. function is defined with two or more arguments, and called with a
  55. single argument that is a tuple with just as many arguments, the items
  56. of this tuple will be used as the arguments.  Although this can (and
  57. should!) be done using the built-in function apply() instead, it isn't
  58. withdrawn yet.)
  59.  
  60.  
  61. One minor change: comparing instance methods works like expected, so
  62. that if x is an instance of a user-defined class and has a method m,
  63. then (x.m==x.m) yields 1.
  64.  
  65.  
  66. The following was already present in 0.9.7beta, but not explicitly
  67. mentioned in the NEWS file: user-defined classes can now define types
  68. that behave in almost allrespects like numbers.  See
  69. demo/classes/Rat.py for a simple example.
  70.  
  71.  
  72. Changes to the build process
  73. ----------------------------
  74.  
  75. The Configure.py script and the Makefile has been made somewhat more
  76. bullet-proof, after reports of (minor) trouble on certain platforms.
  77.  
  78. There is now a script to patch Makefile and config.c to add a new
  79. optional built-in module: Addmodule.sh.  Read the script before using!
  80.  
  81. Useing Addmodule.sh, all optional modules can now be configured at
  82. compile time using Configure.py, so there are no modules left that
  83. require dynamic loading.
  84.  
  85. The Makefile has been fixed to make it easier to use with the VPATH
  86. feature of some Make versions (e.g. SunOS).
  87.  
  88.  
  89. Changes affecting portability
  90. -----------------------------
  91.  
  92. Several minor portability problems have been solved, e.g. "malloc.h"
  93. has been renamed to "mymalloc.h", "strdup.c" is no longer used, and
  94. the system now tolerates malloc(0) returning 0.
  95.  
  96. For dynamic loading on the SGI, Jack Jansen's dl 1.6 is now
  97. distributed with Python.  This solves several minor problems, in
  98. particular scripts invoked using #! can now use dynamic loading.
  99.  
  100.  
  101. Changes to the interpreter interface
  102. ------------------------------------
  103.  
  104. On popular demand, there's finally a "profile" feature for interactive
  105. use of the interpreter.  If the environment variable $PYTHONSTARTUP is
  106. set to the name of an existing file, Python statements in this file
  107. are executed when the interpreter is started in interactive mode.
  108.  
  109. There is a new clean-up mechanism, complementing try...finally: if you
  110. assign a function object to sys.exitfunc, it will be called when
  111. Python exits or receives a SIGTERM or SIGHUP signal.
  112.  
  113. The interpreter is now generally assumed to live in
  114. /usr/local/bin/python (as opposed to /usr/local/python).  The script
  115. demo/scripts/fixps.py will update old scripts in place (you can easily
  116. modify it to do other similar changes).
  117.  
  118. Most I/O that uses sys.stdin/stdout/stderr will now use any object
  119. assigned to those names as long as the object supports readline() or
  120. write() methods.
  121.  
  122. The parser stack has been increased to 500 to accommodate more
  123. complicated expressions (7 levels used to be the practical maximum,
  124. it's now about 38).
  125.  
  126. The limit on the size of the *run-time* stack has completely been
  127. removed -- this means that tuple or list displays can contain any
  128. number of elements (formerly more than 50 would crash the
  129. interpreter). 
  130.  
  131.  
  132. Changes to existing built-in functions and methods
  133. --------------------------------------------------
  134.  
  135. The built-in functions int(), long(), float(), oct() and hex() now
  136. also apply to class instalces that define corresponding methods
  137. (__int__ etc.).
  138.  
  139.  
  140. New built-in functions
  141. ----------------------
  142.  
  143. The new functions str() and repr() convert any object to a string.
  144. The function repr(x) is in all respects equivalent to `x` -- some
  145. people prefer a function for this.  The function str(x) does the same
  146. except if x is already a string -- then it returns x unchanged
  147. (repr(x) adds quotes and escapes "funny" characters as octal escapes).
  148.  
  149. The new function cmp(x, y) returns -1 if x<y, 0 if x==y, 1 if x>y.
  150.  
  151.  
  152. Changes to general built-in modules
  153. -----------------------------------
  154.  
  155. The time module's functions are more general: time() returns a
  156. floating point number and sleep() accepts one.  Their accuracies
  157. depends on the precision of the system clock.  Millisleep is no longer
  158. needed (although it still exists for now), but millitimer is still
  159. needed since on some systems wall clock time is only available with
  160. seconds precision, while a source of more precise time exists that
  161. isn't synchronized with the wall clock.  (On UNIX systems that support
  162. the BSD gettimeofday() function, time.time() is as time.millitimer().)
  163.  
  164. The string representation of a file object now includes an address:
  165. '<file 'filename', mode 'r' at #######>' where ###### is a hex number
  166. (the object's address) to make it unique.
  167.  
  168. New functions added to posix: nice(), setpgrp(), and if your system
  169. supports them: setsid(), setpgid(), tcgetpgrp(), tcsetpgrp().
  170.  
  171. Improvements to the socket module: socket objects have new methods
  172. getpeername() and getsockname(), and the {get,set}sockopt methods can
  173. now get/set any kind of option using strings built with the new struct
  174. module.  And there's a new function fromfd() which creates a socket
  175. object given a file descriptor (useful for servers started by inetd,
  176. which have a socket connected to stdin and stdout).
  177.  
  178.  
  179. Changes to SGI-specific built-in modules
  180. ----------------------------------------
  181.  
  182. The FORMS library interface (fl) now requires FORMS 2.1a.  Some new
  183. functions have been added and some bugs have been fixed.
  184.  
  185. Additions to al (audio library interface): added getname(),
  186. getdefault() and getminmax().
  187.  
  188. The gl modules doesn't call "foreground()" when initialized (this
  189. caused some problems) like it dit in 0.9.7beta (but not before).
  190. There's a new gl function 'gversion() which returns a version string.
  191.  
  192. The interface to sv (Indigo video interface) has totally changed.
  193. (Sorry, still no documentation, but see the examples in
  194. demo/sgi/{sv,video}.)
  195.  
  196.  
  197. Changes to standard library modules
  198. -----------------------------------
  199.  
  200. Most functions in module string are now much faster: they're actually
  201. implemented in C.  The module containing the C versions is called
  202. "strop" but you should still import "string" since strop doesn't
  203. provide all the interfaces defined in string (and strop may be renamed
  204. to string when it is complete in a future release).
  205.  
  206. string.index() now accepts an optional third argument giving an index
  207. where to start searching in the first argument, so you can find second
  208. and further occurrences (this is similar to the regular expression
  209. functions in regex).
  210.  
  211. The definition of what string.splitfields(anything, '') should return
  212. is changed for the last time: it returns a singleton list containing
  213. its whole first argument unchanged.  This is compatible with
  214. regsub.split() which also ignores empty delimiter matches.
  215.  
  216. posixpath, macpath: added dirname() and normpath() (and basename() to
  217. macpath).
  218.  
  219. The mainloop module (for use with stdwin) can now demultiplex input
  220. from other sources, as long as they can be polled with select().
  221.  
  222.  
  223. New built-in modules
  224. --------------------
  225.  
  226. Module struct defines functions to pack/unpack values to/from strings
  227. representing binary values in native byte order.
  228.  
  229. Module strop implements C versions of many functions from string (see
  230. above).
  231.  
  232. Optional module fcntl defines interfaces to fcntl() and ioctl() --
  233. UNIX only.  (Not yet properly documented -- see however src/fcntl.doc.)
  234.  
  235. Optional module mpz defines an interface to an altaernative long
  236. integer implementation, the GNU MPZ library.
  237.  
  238. Optional module md5 uses the GNU MPZ library to calculate MD5
  239. signatures of strings.
  240.  
  241. There are also optional new modules specific to SGI machines: imageop
  242. defines some simple operations to images represented as strings; sv
  243. interfaces to the Indigo video board; cl interfaces to the (yet
  244. unreleased) compression library.
  245.  
  246.  
  247. New standard library modules
  248. ----------------------------
  249.  
  250. (Unfortunately the following modules are not all documented; read the
  251. sources to find out more about them!)
  252.  
  253. autotest: run testall without showing any output unless it differs
  254. from the expected output
  255.  
  256. bisect: use bisection to insert or find an item in a sorted list
  257.  
  258. colorsys: defines conversions between various color systems (e.g. RGB
  259. <-> YUV)
  260.  
  261. nntplib: a client interface to NNTP servers
  262.  
  263. pipes: utility to construct pipeline from templates, e.g. for
  264. conversion from one file format to another using several utilities.
  265.  
  266. regsub: contains three functions that are more or less compatible with
  267. awk functions of the same name: sub() and gsub() do string
  268. substitution, split() splits a string using a regular expression to
  269. define how separators are define.
  270.  
  271. test_types: test operations on the built-in types of Python
  272.  
  273. toaiff: convert various audio file formats to AIFF format
  274.  
  275. tzparse: parse the TZ environment parameter (this may be less general
  276. than it could be, let me know if you fix it).
  277.  
  278. (Note that the obsolete module "path" no longer exists.)
  279.  
  280.  
  281. New SGI-specific library modules
  282. --------------------------------
  283.  
  284. CL: constants for use with the built-in compression library interface (cl)
  285.  
  286. Queue: a multi-producer, multi-consumer queue class implemented for
  287. use with the built-in thread module
  288.  
  289. SOCKET: constants for use with built-in module socket, e.g. to set/get
  290. socket options.  This is SGI-specific because the constants to be
  291. passed are system-dependent.  You can generate a version for your own
  292. system by running the script demo/scripts/h2py.py with
  293. /usr/include/sys/socket.h as input.
  294.  
  295. cddb: interface to the database used the the CD player
  296.  
  297. torgb: convert various image file types to rgb format (requires pbmplus)
  298.  
  299.  
  300. New demos
  301. ---------
  302.  
  303. There's an experimental interface to define Sun RPC clients and
  304. servers in demo/rpc.
  305.  
  306. There's a collection of interfaces to WWW, WAIS and Gopher (both
  307. Python classes and program providing a user interface) in demo/www.
  308. This includes a program texi2html.py which converts texinfo files to
  309. HTML files (the format used hy WWW).
  310.  
  311. The ibrowse demo has moved from demo/stdwin/ibrowse to demo/ibrowse.
  312.  
  313. For SGI systems, there's a whole collection of programs and classes
  314. that make use of the Indigo video board in demo/sgi/{sv,video}.  This
  315. represents a significant amount of work that we're giving away!
  316.  
  317. There are demos "rsa" and "md5test" that exercise the mpz and md5
  318. modules, respectively.  The rsa demo is a complete implementation of
  319. the RSA public-key cryptosystem!
  320.  
  321. A bunch of games and examples submitted by Stoffel Erasmus have been
  322. included in demo/stoffel.
  323.  
  324. There are miscellaneous new files in some existing demo
  325. subdirectories: classes/bitvec.py, scripts/{fixps,methfix}.py,
  326. sgi/al/cmpaf.py, sockets/{mcast,gopher}.py.
  327.  
  328. There are also many minor changes to existing files, but I'm too lazy
  329. to run a diff and note the differences -- you can do this yourself if
  330. you save the old distribution's demos.  One highlight: the
  331. stdwin/python.py demo is much improved!
  332.  
  333.  
  334. Changes to the documentation
  335. ----------------------------
  336.  
  337. The LaTeX source for the library uses different macros to enable it to
  338. be converted to texinfo, and from there to INFO or HTML format so it
  339. can be browsed as a hypertext.  The net result is that you can now
  340. read the Python library documentation in Emacs info mode!
  341.  
  342.  
  343. Changes to the source code that affect C extension writers
  344. ----------------------------------------------------------
  345.  
  346. The function strdup() no longer exists (it was used only in one places
  347. and is somewhat of a a portability problem sice some systems have the
  348. same function in their C library.
  349.  
  350. The functions NEW() and RENEW() allocate one spare byte to guard
  351. against a NULL return from malloc(0) being taken for an error, but
  352. this should not be relied upon.
  353.  
  354.  
  355. ==================================
  356. ==> NEWS FOR RELEASE 0.9.7beta <==
  357. ==================================
  358.  
  359.  
  360. Changes to the language proper
  361. ------------------------------
  362.  
  363. User-defined classes can now implement operations invoked through
  364. special syntax, such as x[i] or `x` by defining methods named
  365. __getitem__(self, i) or __repr__(self), etc.
  366.  
  367.  
  368. Changes to the build process
  369. ----------------------------
  370.  
  371. Instead of extensive manual editing of the Makefile to select
  372. compile-time options, you can now run a Configure.py script.
  373. The Makefile as distributed builds a minimal interpreter sufficient to
  374. run Configure.py.  See also misc/BUILD
  375.  
  376. The Makefile now includes more "utility" targets, e.g. install and
  377. tags/TAGS
  378.  
  379. Using the provided strtod.c and strtol.c are now separate options, as
  380. on the Sun the provided strtod.c dumps core :-(
  381.  
  382. The regex module is now an option chosen by the Makefile, since some
  383. (old) C compilers choke on regexpr.c
  384.  
  385.  
  386. Changes affecting portability
  387. -----------------------------
  388.  
  389. You need STDWIN version 0.9.7 (released 30 June 1992) for the stdwin
  390. interface
  391.  
  392. Dynamic loading is now supported for Sun (and other non-COFF systems)
  393. throug dld-3.2.3, as well as for SGI (a new version of Jack Jansen's
  394. DL is out, 1.4)
  395.  
  396. The system-dependent code for the use of the select() system call is
  397. moved to one file: myselect.h
  398.  
  399. Thanks to Jaap Vermeulen, the code should now port cleanly to the
  400. SEQUENT
  401.  
  402.  
  403. Changes to the interpreter interface
  404. ------------------------------------
  405.  
  406. The interpretation of $PYTHONPATH in the environment is different: it
  407. is inserted in front of the default path instead of overriding it
  408.  
  409.  
  410. Changes to existing built-in functions and methods
  411. --------------------------------------------------
  412.  
  413. List objects now support an optional argument to their sort() method,
  414. which is a comparison function similar to qsort(3) in C
  415.  
  416. File objects now have a method fileno(), used by the new select module
  417. (see below)
  418.  
  419.  
  420. New built-in function
  421. ---------------------
  422.  
  423. coerce(x, y): take two numbers and return a tuple containing them
  424. both converted to a common type
  425.  
  426.  
  427. Changes to built-in modules
  428. ---------------------------
  429.  
  430. sys: fixed core dumps in settrace() and setprofile()
  431.  
  432. socket: added socket methods setsockopt() and getsockopt(); and
  433. fileno(), used by the new select module (see below)
  434.  
  435. stdwin: added fileno() == connectionnumber(), in support of new module
  436. select (see below)
  437.  
  438. posix: added get{eg,eu,g,u}id(); waitpid() is now a separate function.
  439.  
  440. gl: added qgetfd()
  441.  
  442. fl: added several new functions, fixed several obscure bugs, adapted
  443. to FORMS 2.1
  444.  
  445.  
  446. Changes to standard modules
  447. ---------------------------
  448.  
  449. posixpath: changed implementation of ismount()
  450.  
  451. string: atoi() no longer mistakes leading zero for octal number
  452.  
  453. ...
  454.  
  455.  
  456. New built-in modules
  457. --------------------
  458.  
  459. Modules marked "dynamic only" are not configured at compile time but
  460. can be loaded dynamically.  You need to turn on the DL or DLD option in
  461. the Makefile for support dynamic loading of modules (this requires
  462. external code).
  463.  
  464. select: interfaces to the BSD select() system call
  465.  
  466. dbm: interfaces to the (new) dbm library (dynamic only)
  467.  
  468. nis: interfaces to some NIS functions (aka yellow pages)
  469.  
  470. thread: limited form of multiple threads (sgi only)
  471.  
  472. audioop: operations useful for audio programs, e.g. u-LAW and ADPCM
  473. coding (dynamic only)
  474.  
  475. cd: interface to Indigo SCSI CDROM player audio library (sgi only)
  476.  
  477. jpeg: read files in JPEG format (dynamic only, sgi only; needs
  478. external code)
  479.  
  480. imgfile: read SGI image files (dynamic only, sgi only)
  481.  
  482. sunaudiodev: interface to sun's /dev/audio (dynamic only, sun only)
  483.  
  484. sv: interface to Indigo video library (sgi only)
  485.  
  486. pc: a minimal set of MS-DOS interfaces (MS-DOS only)
  487.  
  488. rotor: encryption, by Lance Ellinghouse (dynamic only)
  489.  
  490.  
  491. New standard modules
  492. --------------------
  493.  
  494. Not all these modules are documented.  Read the source:
  495. lib/<modulename>.py.  Sometimes a file lib/<modulename>.doc contains
  496. additional documentation.
  497.  
  498. imghdr: recognizes image file headers
  499.  
  500. sndhdr: recognizes sound file headers
  501.  
  502. profile: print run-time statistics of Python code
  503.  
  504. readcd, cdplayer: companion modules for built-in module cd (sgi only)
  505.  
  506. emacs: interface to Emacs using py-connect.el (see below).
  507.  
  508. SOCKET: symbolic constant definitions for socket options
  509.  
  510. SUNAUDIODEV: symbolic constant definitions for sunaudiodef (sun only)
  511.  
  512. SV: symbolic constat definitions for sv (sgi only)
  513.  
  514. CD: symbolic constat definitions for cd (sgi only)
  515.  
  516.  
  517. New demos
  518. ---------
  519.  
  520. scripts/pp.py: execute Python as a filter with a Perl-like command
  521. line interface
  522.  
  523. classes/: examples using the new class features
  524.  
  525. threads/: examples using the new thread module
  526.  
  527. sgi/cd/: examples using the new cd module
  528.  
  529.  
  530. Changes to the documentation
  531. ----------------------------
  532.  
  533. The last-minute syntax changes of release 0.9.6 are now reflected
  534. everywhere in the manuals
  535.  
  536. The reference manual has a new section (3.2) on implementing new kinds
  537. of numbers, sequences or mappings with user classes
  538.  
  539. Classes are now treated extensively in the tutorial (chapter 9)
  540.  
  541. Slightly restructured the system-dependent chapters of the library
  542. manual
  543.  
  544. The file misc/EXTENDING incorporates documentation for mkvalue() and
  545. a new section on error handling
  546.  
  547. The files misc/CLASSES and misc/ERRORS are no longer necessary
  548.  
  549. The doc/Makefile now creates PostScript files automatically
  550.  
  551.  
  552. Miscellaneous changes
  553. ---------------------
  554.  
  555. Incorporated Tim Peters' changes to python-mode.el, it's now version
  556. 1.06
  557.  
  558. A python/Emacs bridge (provided by Terrence M. Brannon) lets a Python
  559. program running in an Emacs buffer execute Emacs lisp code.  The
  560. necessary Python code is in lib/emacs.py.  The Emacs code is
  561. misc/py-connect.el (it needs some external Emacs lisp code)
  562.  
  563.  
  564. Changes to the source code that affect C extension writers
  565. ----------------------------------------------------------
  566.  
  567. New service function mkvalue() to construct a Python object from C
  568. values according to a "format" string a la getargs()
  569.  
  570. Most functions from pythonmain.c moved to new pythonrun.c which is
  571. in libpython.a.  This should make embedded versions of Python easier
  572.  
  573. ceval.h is split in eval.h (which needs compile.h and only declares
  574. eval_code) and ceval.h (which doesn't need compile.hand declares the
  575. rest)
  576.  
  577. ceval.h defines macros BGN_SAVE / END_SAVE for use with threads (to
  578. improve the parallellism of multi-threaded programs by letting other
  579. Python code run when a blocking system call or something similar is
  580. made)
  581.  
  582. In structmember.[ch], new member types BYTE, CHAR and unsigned
  583. variants have been added
  584.  
  585. New file xxmodule.c is a template for new extension modules.
  586.